//package com.my.core.util.file;
//
//import io.swagger.annotations.ApiOperation;
//import lombok.extern.slf4j.Slf4j;
//import org.jeecg.common.api.vo.Result;
//import org.jeecg.common.aspect.annotation.AutoLog;
//import org.jeecg.common.exception.JeecgBootException;
//import org.jeecg.modules.util.FileInfoUtils;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.security.access.prepost.PreAuthorize;
//import org.springframework.web.bind.annotation.*;
//import javax.annotation.Resource;
//import java.util.Arrays;
//import java.util.List;
//import java.util.stream.Collectors;
//
//代码参照
//@RestController
//@RequestMapping("/parkFile")
//@Slf4j
//public class FileInfoUtilsTest {
//
//
//        @Resource
//        private ParkFileService parkFileService;
//
//        // 注入文件上传根路径，建议通过配置文件注入
//        @Value("${jeecg.upload.path}")
//        private String uploadRootPath;

//
///**
// * 编辑（使用工具类获取文件信息）
// */
//@AutoLog(value = "园区生产活动视频-编辑")
//@ApiOperation(value="园区生产活动视频-编辑", notes="园区生产活动视频-编辑")
//@RequiresPermissions("parkFile:park_file:edit")
//@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
//public Result<String> edit(@RequestBody ParkFile parkFile) {
//    try {
//        // 调用工具类获取文件信息
//        FileInfoUtils.FileInfo fileInfo = FileInfoUtils.getFileInfo(
//                uploadRootPath,
//                parkFile.getFileUrl()
//        );
//
//        // 设置文件属性到实体
//        parkFile.setFileFormart(fileInfo.getFileFormat());
//        parkFile.setFileSize(fileInfo.getFileSize());
//
//        // 更新数据
//        parkFileService.updateById(parkFile);
//        return Result.OK("编辑成功!");
//    } catch (JeecgBootException e) {
//        log.error("编辑失败", e);
//        return Result.error(e.getMessage());
//    } catch (Exception e) {
//        log.error("编辑时发生未知错误", e);
//        return Result.error("编辑失败：" + e.getMessage());
//    }
//}
//
//        /**
//         * 园区生产活动视频-通过id删除（同步删除物理文件）
//         */
//        @AutoLog(value = "园区生产活动视频-通过id删除")
//        @ApiOperation(value = "园区生产活动视频-通过id删除", notes = "园区生产活动视频-通过id删除（同步删除物理文件）")
//        @PreAuthorize("hasPermission(null, 'parkFile:park_file:delete')")
//        @DeleteMapping(value = "/delete")
//        @Transactional(rollbackFor = Exception.class)
//        public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
//            try {
//                // 1. 先查询文件信息
//                ParkFile parkFile = parkFileService.getById(id);
//                if (parkFile == null) {
//                    return Result.error("删除失败，未找到对应记录！");
//                }
//
//                String fileUrl = parkFile.getFileUrl();
//                if (fileUrl == null) {
//                    log.warn("删除ID为{}的记录时未找到文件路径，仅删除数据库记录", id);
//                } else {
//                    // 2. 尝试删除物理文件
//                    try {
//                        FileInfoUtils.deleteFile(uploadRootPath, fileUrl);
//                        log.info("成功删除物理文件：{}", fileUrl);
//                    } catch (JeecgBootException e) {
//                        log.error("删除物理文件失败：{}", e.getMessage());
//                        // 可以根据业务需求决定是否抛出异常终止操作
//                        // throw new JeecgBootException("删除文件失败：" + e.getMessage());
//                    }
//                }
//
//                // 3. 删除数据库记录
//                boolean removeSuccess = parkFileService.removeById(id);
//                if (removeSuccess) {
//                    return Result.OK("删除成功!");
//                } else {
//                    return Result.error("删除失败，数据库记录删除未成功！");
//                }
//            } catch (Exception e) {
//                log.error("删除园区生产活动视频失败", e);
//                return Result.error("删除失败：" + e.getMessage());
//            }
//        }
//
//        /**
//         * 园区生产活动视频-批量删除（同步删除物理文件）
//         */
//        @AutoLog(value = "园区生产活动视频-批量删除")
//        @ApiOperation(value = "园区生产活动视频-批量删除", notes = "园区生产活动视频-批量删除（同步删除物理文件）")
//        @PreAuthorize("hasPermission(null, 'parkFile:park_file:deleteBatch')")
//        @DeleteMapping(value = "/deleteBatch")
//        @Transactional(rollbackFor = Exception.class)
//        public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
//            try {
//                // 1. 解析ID列表
//                List<String> idList = Arrays.asList(ids.split(","));
//                if (idList.isEmpty()) {
//                    return Result.error("请选择需要删除的记录！");
//                }
//
//                // 2. 批量查询文件信息
//                List<ParkFile> parkFiles = parkFileService.listByIds(idList);
//                if (parkFiles.isEmpty()) {
//                    return Result.error("未找到任何需要删除的记录！");
//                }
//
//                // 3. 提取所有文件路径
//                List<String> fileUrls = parkFiles.stream()
//                        .filter(file -> file.getFileUrl() != null)
//                        .map(ParkFile::getFileUrl)
//                        .collect(Collectors.toList());
//
//                // 4. 批量删除物理文件（遇到错误继续处理其他文件）
//                if (!fileUrls.isEmpty()) {
//                    FileInfoUtils.BatchDeleteResult deleteResult = FileInfoUtils.batchDeleteFiles(
//                            uploadRootPath, fileUrls, true);
//
//                    log.info("批量删除文件结果：总{}个，成功{}个，失败{}个",
//                            deleteResult.getTotalCount(),
//                            deleteResult.getSuccessCount(),
//                            deleteResult.getFailCount());
//
//                    if (deleteResult.getFailCount() > 0) {
//                        log.warn("部分文件删除失败：{}", deleteResult.getFailDetails());
//                        // 可以根据业务需求决定是否返回警告信息
//                    }
//                }
//
//                // 5. 批量删除数据库记录
//                boolean removeSuccess = parkFileService.removeByIds(idList);
//                if (removeSuccess) {
//                    return Result.OK("批量删除成功! 共处理" + idList.size() + "条记录");
//                } else {
//                    return Result.error("批量删除失败，数据库记录删除未成功！");
//                }
//            } catch (Exception e) {
//                log.error("批量删除园区生产活动视频失败", e);
//                return Result.error("批量删除失败：" + e.getMessage());
//            }
//        }
//
//}
